<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <script>

        

        // function noRepeat(arr) {
        //     // 创建新数组
        //     // 删除原数组  塌陷

        //     const newArr = [] ;
        //     for(let i in arr) {
        //         if(newArr.indexOf(arr[i]) === -1) {
        //             newArr.push(arr[i])
        //         }
        //     }
        //     return newArr
        // }

        // console.log(noRepeat(arr));


        // 原型对象
        Array.prototype.noRepeat = function() {
            const newArr = [] ;

            // 此处如果使用for in  bug  遍历的时候回会多出来一个f() 其实就是noRepeat这个函数  for in会遍历对象上所有的属性和方法  数组的默认方法都设置了不让遍历 
            for(let i = 0 ; i < this.length ; i++) {
                if(newArr.indexOf(this[i]) === -1) {
                    newArr.push(this[i])
                }
            }
            return newArr
        }



        const arr = [4,2,1,4,2,43,2,2,1];

        const res = arr.noRepeat() ;

        console.log(res);





        // const a = {
        //     0 : 1,
        //     1 : 2 ,
        //     2 : 3 ,
        //     concat : function(){} ,
        //     push : function() {}
        // }


        // const obj = {
        //     0 : 'cc' ,
        //     1 : 1 ,
        //     2 : '3' ,
        //     say : function() {

        //     }
        // }



    </script>
    
</body>
</html>